package com.csun.cmny.provider.dao;

import com.csun.cmny.provider.model.domain.UacEmp;
import com.csun.cmny.provider.model.dto.dept.EmpLifeDto;
import com.csun.cmny.provider.model.dto.dept.EmpQueryDto;
import com.csun.cmny.provider.model.vo.EmpLifeVo;
import com.csun.cmny.provider.model.vo.EmpRoleVo;
import com.csun.cmny.provider.model.vo.EmpVo;
import com.csun.cmny.provider.model.vo.LifeEmpVo;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

public interface UacEmpMapper extends Mapper<UacEmp> {

    /**
     * 根据deptId查询员工信息
     *
     * @param deptId 部门Id
     * @return 员工列表
     */
    List<EmpVo> getEmpByDeptId(Long deptId);

    /**
     * 根据userId更新员工信息
     *
     * @param uacEmp 用户信息
     * @return
     */
    int updateByUserId(UacEmp uacEmp);

    /**
     * 根据userId查询员工信息
     *
     * @param userId 用户Id
     * @return 员工信息
     */
    EmpVo getUacEmpByUserId(Long userId);

    /**
     * 查询员工信息列表 - 分页
     *
     * @param empQueryDto   emp query dto
     *
     * @return  the list.
     */
    List<EmpVo> queryEmpListWithPage(EmpQueryDto empQueryDto);

    /**
     * 查询员工信息列表 - 包含角色
     *
     * @param empQueryDto   emp query dto
     *
     * @return  the list.
     */
    List<EmpVo> queryUserListByEmpWithPage(EmpQueryDto empQueryDto);

    /**
     * 查询员工信息列表 - 包含多个角色
     *
     * @param empQueryDto   emp query dto
     *
     * @return  the list.
     */
    List<EmpRoleVo> selectUserListByEmpWithPage(EmpQueryDto empQueryDto);

    /**
     * 根据deptId查询员工信息（包含角色）
     *
     * @param deptId 部门Id
     * @return 员工列表
     */
    List<EmpVo> getEmpByDeptIdWithRole(Long deptId);

    /**
     * 根据userId查询员工信息（带角色）
     *
     * @param userId 用户Id
     * @return 员工信息
     */
    EmpVo getUacEmpWithRoleByUserId(Long userId);

    List<EmpLifeVo> queryUserListByEmpWithLife(EmpLifeDto empLifeDto);

    /**
     * Life员工详情
     * @param userId
     * @return
     */
    LifeEmpVo selectLifeUser(Long userId);
}